package com.dgut.common.mapper;

import com.dgut.common.entity.Bill;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dgut.common.vo.BillTagDataVO;
import com.dgut.common.vo.BillVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;
/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author it00zyq
 * @since 2021-04-04
 */
@Repository
public interface BillMapper extends BaseMapper<Bill> {

    /**
     * 将用户要删除的标签绑定的账单的标签修改为[其他]
     * @param userId 用户ID
     * @param tagId 要删除的标签
     * @param toTagId 修改为该标签ID
     */
    @Update("update bill set tag_id = #{toTagId} where deleted = 0 and user_id = #{userId} and tag_id = #{tagId}")
    void updateBillTag(@Param("userId") Integer userId, @Param("tagId") Integer tagId, @Param("toTagId") Integer toTagId);


    /**
     * 指定时间范围内的账单详情
     * @param begin 开始时间
     * @param end 结束时间
     * @param userId 用户ID
     * @param type 0-支出，1-收入
     * @return 账单详情
     */
    List<BillTagDataVO> listBillTag(@Param("begin")Date begin, @Param("end") Date end, @Param("userId") Integer userId, @Param("type") Integer type);



    /**
     * 指定时间范围内的账单列表
     * @param begin 开始时间
     * @param end 结束时间
     * @param userId 用户ID
     * @param type 0-支出，1-收入
     * @return 账单列表
     */
    List<BillVO> listBill(@Param("begin")Date begin, @Param("end") Date end, @Param("userId") Integer userId, @Param("type") Integer type);


}
